class Solution {
    public int countSubstrings(String s) {
        // 创建dp表、初始化、填表、返回值
        int n = s.length();
        boolean[][] dp = new boolean[n][n];
        char[] ss = s.toCharArray();

        // 初始化通过for循环来完成

        int ret = 0;
        for (int i = n-1; i >= 0; i--) {
            for (int j = n-1; j >= i; j--) {
                if (ss[i] == ss[j]) {
                    if (i == j || i+1 == j) {
                        dp[i][j] = true;
                    } else {
                        dp[i][j] =  dp[i+1][j-1];
                    }
                } // 默认为false，因此不用去赋值了
                ret += dp[i][j] ? 1 : 0;
            }
        }

        return ret;
    }
}